/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import bean.Local;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


public class BDLocal extends BDPadrao implements BDModelo {

    static private Connection conexao;

    public static String inserir(Local obj) {
        try {
            conexao = BDPadrao.conectar(); //Ponte
            String sql = "insert into local (loc_nome, loc_coordenada, loc_tipo) values (?, ?, ?)";
            PreparedStatement pstm = conexao.prepareStatement(sql); //Caminhão
            
            pstm.setString(1, obj.getNome()); //1º Interrogação da instrução SQL
            pstm.setString (2, obj.getCoordenada());  //2º Interrogação da instrução SQL
            pstm.setString(3, obj.getTipo()); //3º Interrogação da instrução SQL

            pstm.executeUpdate(); //Executa a instrução insert = o caminhao irá fazer o transporte
            BDPadrao.desconectar(conexao);

            return mensOKInserir;
        } catch (SQLException | ClassNotFoundException ex) {
            //System.out.println(ex.getMessage());
            return mensErroInserir;
        }
    }
// Alterar
    public static String alterar(Local obj) {
        try {
            conexao = BDPadrao.conectar();
            String sql = "update local set loc_nome = ?, loc_coordenada = ?, loc_tipo = ? where loc_cod = ?";
            PreparedStatement pstm = conexao.prepareStatement(sql);

            pstm.setString(1, obj.getNome());
            pstm.setString(2, obj.getCoordenada());
            pstm.setString(3, obj.getTipo());
            pstm.setInt(4, obj.getId());

            pstm.executeUpdate();
            BDPadrao.desconectar(conexao);
            
            return mensOKAlterar;
        } catch (SQLException | ClassNotFoundException ex) {
            System.out.println(ex.getMessage());
            return mensErroAlterar;
        }
    }
// Excluir
    public static String excluir(Local obj) {
        try {
            conexao = conectar();
            String sql = "delete from local where loc_cod = ?";
            PreparedStatement pstm = conexao.prepareStatement(sql);

            pstm.setInt(1, obj.getId());

            pstm.executeUpdate();
            BDPadrao.desconectar(conexao);
            
            return mensOKExcluir;
        } catch (SQLException | ClassNotFoundException ex) {
            //System.out.println(ex.getMessage());
            return mensErroExcluir;
        }
    }
// Pesquisar
    public static ArrayList<Local> pesquisarPorNome(String nome) throws SQLException, ClassNotFoundException {

        String sql;
        if (!nome.equals("")) {
            sql = "select * from local where loc_nome like '%" + nome + "%' or loc_tipo like '%" + nome + "%' order by loc_nome";
        } else {
            sql = "select * from local order by loc_nome";
        }

        ArrayList<Local> lista = new ArrayList<Local>();
        ResultSet rs = BDPadrao.pesquisar(sql); //resultSer = matriz com os dados do BD

        while (rs.next()) {
            Local obj = new Local();
            obj.setId(rs.getInt("loc_cod"));
            obj.setNome(rs.getString("loc_nome"));
            obj.setTipo(rs.getString("loc_tipo"));
            obj.setCoordenada(rs.getString("loc_coordenada"));

            lista.add(obj);
        }

        return lista;
    }
    
    public static Local pesquisarPorCodigo(int id) throws SQLException, ClassNotFoundException {
        String sql = "select * from local where loc_cod = " + id + "order by loc_cod";

        ResultSet rs = BDPadrao.pesquisar(sql); //resultSer = matriz com os dados do BD
        Local obj = null;
        
        while (rs.next()) {
            obj = new Local();
            obj.setId(rs.getInt("loc_cod"));
            obj.setNome(rs.getString("loc_nome"));
            obj.setTipo(rs.getString("loc_tipo"));
            obj.setCoordenada(rs.getString("loc_coordenada"));
        }
        return obj;
    }
    
}
